#pragma once
#include <rviz/display.h>
#include <rviz/panel_dock_widget.h>

#include "panel_teleop.h"

// forward declaration
namespace rviz
{
	class BoolProperty;
    class FloatProperty;
    class StringProperty;
	class RosTopicProperty;
}

namespace rviz_plugins
{
	// declare a new subclass of rviz::Display
	// every display which can be listed in the "Displays" panel is a subclass of rviz::Display
	class DisplayTeleop : public rviz::Display 
	{
		Q_OBJECT
	public:
		// pluginlib::ClassLoader creates instances by calling the default constructor,
		// so make sure you have one
		DisplayTeleop();
		virtual ~DisplayTeleop();

		// overrides of protected virtual functions from Display as much as possible,
		// when Displays are not enabled, they should not be subscribed to incoming data,
		// and should not show anything in the 3D view
		// these functions are where these connections are made and broken
	protected:
		virtual void onInitialize();

	private:
        rviz::PanelDockWidget* frame_dock_{ nullptr };
        TeleopPanel* panel_{ nullptr };
	};
} // end namespace rviz_plugins
